package cn.udinghuo.model.archives.option;

import java.util.HashMap;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import cn.udinghuo.core.value.Enumable;
/**
 * @author xufla
 *	选项编码
 */
public enum FunctionOptionCodeTypeEnum implements Enumable {

	
	/**
     * 订货端每页最多显示商品数量
     */
	PRODUCTPAGECOUNT("订货端每页最多显示商品数量" ,(short)0,false),
	/**
     * 客户信用额度控制
     */
	CREDITWORTHREMIND("客户信用额度控制" ,(short)1,false),
	/**
     * 启用辅计量单位
     */
	OPENAUXUNIT("启用辅计量单位" ,(short)2,false),
	/**
     * 辅助计量单位精度位数
     */
	OPENAUXUNITDIGIT("辅助计量单位精度位数" ,(short)3,false),
	/**
     * 使用区域仓库
     */
	OPENSTOCK("使用区域仓库" ,(short)4,false),
	/**
     * 库存显示方式
     */
	INVENTORYDISPLAY("库存显示方式" ,(short)5,false),
	/**
     * 不允许超库存订货
     */
	ORDERINVENTORYCHECK("不允许超库存订货" ,(short)6,false),
	/**
     * 接收ERP现存量
     */
	ACCEPTERPINVENTORY("接收ERP现存量" ,(short)7,false),
	/**
     * 预计发货日期
     */
	ORDERDELIVERYDATE("预计发货日期" ,(short)8,false),
	/**
     * 订单自动收货确认
     */
	DELIVERYCONFIRMDAY("订单自动收货确认" ,(short)9,false),
	/**
     * 库存占用时机
     */
	ORDEROCCUPYSTOCKTIMING("库存占用时机" ,(short)10,false),
	/**
     * 不允许客户维护账户信息
     */
	AGENTMAINTAIN("不允许客户维护账户信息" ,(short)11,false),
	/**
     * 超时未付款自动取消订单
     */
	ORDERTIMEOUTCANCEL("超时未付款自动取消订单" ,(short)12,false),
	/**
     * 订货端显示期望收货日期
     */
	SHOWHOPERERECEIVEDATE("订货端显示期望收货日期" ,(short)13,false),
	/**
     * 商品详情显示销量
     */
	DISPLAYISALES("商品详情显示销量" ,(short)14,false),
	/**
     * 快速下单是否显示商品全名
     */
	SHOWPRODUCTFULLNAME("快速下单是否显示商品全名" ,(short)15,true),
	/**
     * 商品详情是否显示商品原价
     */
	SHOWPRODUCTORIGINALPRICE("商品详情是否显示商品原价" ,(short)16,false),
	/**
     * 订货计量单位
     */
	CHOICEUNITTYPE("订货计量单位" ,(short)17,false),
	/**
     * 超时自动取消订单时间计量单位
     */
	ORDERCANCELTYPE("超时自动取消订单时间计量单位" ,(short)18,false),
	/**
     * 订单确认后才可付款
     */
	ORDERPAYFORCONFIRM("订单确认后才可付款" ,(short)19,false),
	/**
     * 属性值数量限制
     */
	SPECITEMCOUNT("属性值数量限制" ,(short)20,false),
	/**
     * 付款单附件必填
     */
	PAYMENTACCESSORYEXIST("付款单附件必填" ,(short)21,false),
	/**
     * 换算率设置依据
     */
	AUXUNITCONVERSIONRATE("换算率设置依据" ,(short)22,false),
	/**
     * 订货端商品列表排序规则
     */
	ORDERBYPRODUCT("订货端商品列表排序规则" ,(short)23,false),
	/**
     * 订货端订单编辑时删除商品处理规则
     */
	PRODUCTRETURNSHOPPINGCART("订货端订单编辑时删除商品处理规则" ,(short)24,false),
	/**
     * 确认订单时默认显示可用量
     */
	SHOWPRODUCTUSABLECOUNT("确认订单时默认显示可用量" ,(short)25,false),
	/**
     * 订单自动确认
     */
	ORDERAUTOCONFIRM("订单自动确认" ,(short)26,false),
	/**
     * 线上支付
     */
	ONLINEPAYMENT("线上支付" ,(short)27,false),
	/**
     * 线下支付
     */
	OFFLINEPAYMENT("线下支付" ,(short)28,false),
	/**
     * 金额、单价精度
     */
	UNITPRICEPRECISION("金额、单价精度" ,(short)29,false),
	/**
     * 加价购
     */
	PRICEMARKUP("加价购" ,(short)30,true),
	/**
     * 按照sku编码查询
     */
	QUERYBYSKUCODE("按照sku编码查询" ,(short)31,true),
	/**
     * 地址列表
     */
	ADDRESSCOSTOM("地址列表" ,(short)32,true),
	/**
     * 银行列表
     */
	BANKCUSTOM("银行列表" ,(short)33,true),
	/**
     * 结算依据
     */
	SETTLEVOUCHERTYPE("结算依据" ,(short)34,false),
	/**
     * 展示扣率
     */
	SHOWDISCOUNT("展示扣率" ,(short)35,true),
	/**
     * 支持无来源退货
     */
	SHOWSALERETURNNONESOURCE("支持无来源退货" ,(short)36,false),
	/**
     * 发送短信消息
     */
	SENDMSGTOSMS("发送短信消息" ,(short)37,false),
	/**
     * 支持业务员代收货确认
     */
	REPLACERECEIPTCONFIRMATION("支持业务员代收货确认" ,(short)38,false),
	/**
     * 开启订单评价
     */
	OPENCOMMENT("开启订单评价" ,(short)39,true),
	/**
     * 按商品行发货限制
     */
	ASTRICTDELIVERYDETAIL("按商品行发货限制" ,(short)40,true),
	/**
     * 控制商品备货日期
     */
	PRODUCTREADYDATE("控制商品备货日期" ,(short)41,false),
	/**
     * 客户折扣的计算依据
     */
	DISRATECALCRULE("客户折扣的计算依据" ,(short)42,false),
	/**
     * 是否设置自定义主题
     */
	FESTIVALSET("是否设置自定义主题" ,(short)43,true),
	/**
     * 商品价格为‘0’时的价格展示
     */
	PRODUCTPRICESHOW("商品价格为‘0’时的价格展示" ,(short)44,false),
	/**
     * 订货端订单是否隐藏成交价
     */
	DISPLAYPRICE("订货端订单是否隐藏成交价" ,(short)45,true),
	/**
     * 订单提交后自动进入支付界面
     */
	ENTERPAYMENT("订单提交后自动进入支付界面" ,(short)46,false),
	/**
     * 费用单确认时，自动耗用资金账户余额进行支付
     */
	EXPENSEORERSYSPAY("费用单确认时，自动耗用资金账户余额进行支付" ,(short)47,false),
	/**
     * 支持客户自选仓库
     */
	USERSELECTSTOCK("支持客户自选仓库" ,(short)48,false),
	/**
     * 是否允许手工增加赠品
     */
	USERSELECTGIVEAWAY("是否允许手工增加赠品" ,(short)49,false),
	/**
     * 开启订单商品权限
     */
	OPENORDERPROAUTH("开启订单商品权限" ,(short)50,true),
	/**
     * 启用自动分单
     */
	OPENAUTOSPLIT("启用自动分单" ,(short)51,false),
	/**
     * 商品ERP编码可重复
     */
	BDUPLICATEPRODUCTERPCODE("商品ERP编码可重复" ,(short)52,true),
	/**
     * 订单列表检查人员权限
     */
	ORDERLIST_CORPUSER_AUTH("订单列表检查人员权限" ,(short)53,true),
	/**
     * 返利单列表检查制单人
     */
	REBATE_CORPUSER_AUTH("返利单列表检查制单人" ,(short)54,true),
	/**
     * 支持设定多交易类型
     */
	SETTINGTRANSACTIONTYPES("支持设定多交易类型" ,(short)55,false),
	/**
     * 订单金额计算公式
     */
	ORDERMONEY_FORMULA("订单金额计算公式" ,(short)56,true),
	/**
     * 控制订单列表默认显示量
     */
	ORDERLISTDEFAULTDISPLAY("控制订单列表默认显示量" ,(short)57,true),
	/**
     * 启用经销商线上服务协议
     */
	SERVICETERMS("启用经销商线上服务协议" ,(short)58,false),
	/**
     * 打开订货市场
     */
	OPENINFORMATION("打开订货市场" ,(short)59,false),
	/**
     * 订单隐藏价格及优惠信息
     */
	HIDEPORDERROMOTION("订单隐藏价格及优惠信息" ,(short)60,true),
	/**
     * 客户下单改价
     */
	ORDERAGENTMODIFYPRICE("客户下单改价" ,(short)61,true),
	/**
     * 游客价格依据
     */
	TOURISTPRICEBASIS("游客价格依据" ,(short)62,false),
	/**
     * 上传订单专项设置
     */
	UPLOADORDERSPECIAL("上传订单专项设置" ,(short)63,true),
	/**
     * 库存展示单位
     */
	INVDISPLAYUNIT("库存展示单位" ,(short)64,false),
	/**
     * 启用返利来源
     */
	STARTREBATESOURCE("启用返利来源" ,(short)65,false),
	/**
     * 返利单返利来源必填
     */
	REQUIREDEBATESOURCE("返利单返利来源必填" ,(short)66,false),
	/**
     * U订货订单传ERP方式
     */
	ORDERPUSHERPTYPE("U订货订单传ERP方式" ,(short)67,true),
	/**
     * 开启运费
     */
	OPENFREIGHT("开启运费" ,(short)68,false),
	/**
     * 多运费模板时运费计算规则
     */
	OPENFREIGHTRULE("多运费模板时运费计算规则" ,(short)69,false),
	/**
     * 自定义短信签名
     */
	CUSTOMSMSSIGN("自定义短信签名" ,(short)70,true),
	/**
     * 允许调整单据日期
     */
	MODIFYORDERDATE("允许调整单据日期" ,(short)71,true),
	/**
     * SKU页签展现方式
     */
	SKUSHOWMETHOD("SKU页签展现方式" ,(short)72,true);
	
	private String title;
	private short value;
	private boolean isHide;
	
	FunctionOptionCodeTypeEnum(String title,short value,boolean isHide){
		this.title=title;
		this.value=value;
		this.isHide = isHide;
	}

	
	@Override
	public Short getValue(){
		return this.value;
	}
	
	@JsonValue
	@Override
	public String getName(){
		return this.name();
	}
	
	@Override
	public String getTitle(){
		return this.title;
	}
	
	
	public boolean getIsHide(){
		return this.isHide;
	}
	private static HashMap<String, FunctionOptionCodeTypeEnum> map = null;
	
	private synchronized static void initMap() {
		if (map != null) {
			return;
		}
		map = new HashMap<String, FunctionOptionCodeTypeEnum>();
		FunctionOptionCodeTypeEnum[] items = FunctionOptionCodeTypeEnum.values();
		for (FunctionOptionCodeTypeEnum item : items) {
			map.put(item.getName(), item);
		}
	}
	@JsonCreator
	public static FunctionOptionCodeTypeEnum find(String value) {
		if (value == null) {
			return null;
		}
		if (map == null) {
			initMap();
		}
		return map.get(value);
	}
}

